/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package test.cei.rmi.observer.server;

import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import test.cei.rmi.observer.common.dto.MensajeDTO;
import test.cei.rmi.observer.common.rmi.ClienteRMI;
import test.cei.rmi.observer.common.rmi.ServidorRMI;

/**
 *
 * @author Francisco
 */
public class Servidor extends UnicastRemoteObject implements ServidorRMI {

    private List<ClienteRMI> observadoras;

    public Servidor() throws RemoteException {
        super();
        this.observadoras = new ArrayList<ClienteRMI>();
    }

    @Override
    public void procesaMensaje(MensajeDTO mensaje) throws RemoteException {
        this.actualizarObservadoras(mensaje);
    }

    @Override
    public void agregarObservador(ClienteRMI observadora) {
        System.out.println("agrego observadora");
        this.observadoras.add(observadora);
    }

    private void actualizarObservadoras(MensajeDTO mensaje) throws RemoteException {
        Logger.getLogger(this.getClass().getName()).log(Level.INFO, "actualizo clientes");
        for (ClienteRMI observadora : observadoras) {
            if (observadora.getName().equals(mensaje.getDestinatario())) {
                observadora.recibirMensaje(mensaje);
            }
        }
    }
}
